<?php
class ManageStaticPagesController extends AppController {
	/**
	 @var $name
	 @brief Tên của controller
	 */
	var $name = 'ManageStaticPages';
	
	/**
	 @var $components
	 @brief Danh sách tất cả các Component được sử dụng trong controller
	 */
	var $components = array('MultiFileUpload');
	
	/**
	 @var $uses
	 @brief Danh sách tất cả các model được sử dụng trong controller
	 */
	var $uses = array('static_pages.StaticPage');
	
	/**
	 @var $helpers
	 @brief Danh sách tất cả các Helper được sử dụng trong view
	 */
	var $helpers = array('Form','Wysiwyg');
	
	/**
	 @var $category_root_id
	 @brief Id của danh mục gốc của hệ thống quản lý trang
	 */
	var $category_root_id = null;
	
	
	function beforeFilter() {
		parent::beforeFilter();
		
		$this->configs = $this->StaticPage->loadConfig();
//		$this->params['named']['root'] = '';
//		$this->category_root_id = $this->configs['Category']['root_id'];
		$this->set('configs', $this->configs);
	}
	
	/**
	 * ----------- Manage của editable page ------------------
	 */
	

	/**
	 * Hành động liệt kê ra danh sách các trang, có phân trang
	 */
	function index() {
		$this->paginate['StaticPage'] = array(
			'limit' => 20,
			'order'	=> 'created desc'
		);
		$data = $this->paginate('StaticPage');
		$this->set('pages', $data);
	}
	
	/**
	 * Phương thức được sử dụng để tạo mới một trang, bao gồm hiển thị form nhập liệu và xử lý các thông tin nhập liệu đó
	 */
	function add() {
		if (empty($this->data)) {
			// load dữ liệu trong trường hợp phát sinh lỗi
			$this->__checkError('StaticPage');
		} else {
			try {
				// Create Category Information
				//debug($this->data);
				$this->data = $this->StaticPage->validateData($this->data);
			} catch (Exception $ex) {
				$this->__setError('StaticPage');
				$this->Session->setFlash($ex->getMessage(), "flash_error");
				$this->redirect("/".$this->params['url']['url']);
			}
			
			$this->StaticPage->create($this->data);
			if ($this->StaticPage->save($this->data)) {
			
				$this->Session->setFlash(__("Trang tĩnh đã được tạo mới thành công!", true), "flash_success");
				$this->redirect(array(
					'action'	=> 'index',
				));
			} else {
				$this->__setError('StaticPage');
				$this->Session->setFlash(__("Không thể lưu thông tin trang tĩnh này. Bạn vui lòng thử lại!", true), "flash_error");
				$this->redirect("/".$this->params['url']['url']);
			}
		}
	}
	
	/**
	 * Phương thức được sử dụng để chỉnh sửa thông tin một trang, bao gồm hiển thị form nhập liệu và xử lý các thông tin nhập liệu đó
	 * @param $id ID của trang cần chỉnh sửa
	 */
	function edit($id=null) {
		if (empty($this->data)) {
			$this->data = $this->StaticPage->read(null, $id);
			// load dữ liệu trong trường hợp phát sinh lỗi
			$this->__checkError('StaticPage');
		} else {
			try {
			//	debug($this->data); exit;
				// Create Category Information
				$this->data = $this->StaticPage->validateData($this->data);
			} catch (Exception $ex) {
				$this->__setError('StaticPage');
				$this->Session->setFlash($ex->getMessage(), "flash_error");
				$this->redirect("/".$this->params['url']['url']);
			}
			
			if ($this->StaticPage->save($this->data)) {
				// Related Pages
				$this->Session->setFlash(__("Trang tĩnh đã được cập nhật thành công!", true), "flash_success");
				$this->redirect(array(
					'action'	=> 'edit',
					$id,
				));
			} else {
				$this->__setError('StaticPage');
				
				$this->Session->setFlash(__("Không thể cập nhật thông tin trang tĩnh này. Bạn vui lòng thử lại", true), "flash_error");
				
				// Redirect to current page for refreshing
				$this->redirect("/".$this->params['url']['url']);
			}
		}
	}
	
	/**
	 * Hành động delete được sử dụng để xóa 1 trang, bao gồm thông tin dữ liệu của trang và các thông tin liên quan như hình ảnh, dữ liệu liên quan, ...
	 * @param $id ID của trang cần xóa
	 */
	function delete($id) {
		// Delete Image First
		try {
			$this->StaticPage->deletePage($id);
			$this->Session->setFlash(__("Trang tĩnh đã được xóa thành công!", true), "flash_success");
			$this->redirect(array(
				'action'	=>	'index',
			));
		} catch (Exception $ex) {
			$this->Session->setFlash(__("Không thể xóa trang tĩnh này. Bạn vui lòng thử lại", true), "flash_error");
			$this->redirect(array(
				'action'	=>	'index',
			));
		}
	}
	
	function mass_delete() {
		$checkboxes = array();
		if (isset($_POST['checkbox_index'])) {
			$checkboxes = $_POST['checkbox_index'];
		}
		if (count($checkboxes) > 0) {
			foreach ($checkboxes as $id) {
				$this->StaticPage->deletePage($id);
			}
			
			$this->Session->setFlash(__("Trang tĩnh đã được xóa thành công!", true), "flash_success");
			$this->redirect(array(
				'action'	=>	'index'
			));
		} else {
			$this->Session->setFlash(__("Bạn vui lòng chọn các trang tĩnh cần xóa", true), "flash_error");
			$this->redirect(array(
				'action'	=>	'index'
			));
		}
	}
	
	function publish() {
		$checkboxes = array();
		if (isset($_POST['checkbox_index'])) {
			$checkboxes = $_POST['checkbox_index'];
		}
		if (count($checkboxes) > 0) {
			foreach ($checkboxes as $id) {
				$this->StaticPage->updateAll(
					// fields
					array('is_published'	=> 1),
					
					// conditions
					array('StaticPage.id'	=> $checkboxes)
				);
			}
			
			$this->Session->setFlash(__("Các trang tĩnh đã được kích hoạt!", true), "flash_success");
			$this->redirect(array(
				'action'	=>	'index'
			));
		} else {
			$this->Session->setFlash(__("Bạn vui lòng chọn các trang tĩnh cần kích hoạt", true), "flash_error");
			$this->redirect(array(
				'action'	=>	'index'
			));
		}
	}
	function unpublish() {
		$checkboxes = array();
		if (isset($_POST['checkbox_index'])) {
			$checkboxes = $_POST['checkbox_index'];
		}
		if (count($checkboxes) > 0) {
			foreach ($checkboxes as $id) {
				$this->StaticPage->updateAll(
					// fields
					array('is_published'	=> 0),
					
					// conditions
					array('StaticPage.id'	=> $checkboxes)
				);
			}
			
			$this->Session->setFlash(__("Các trang tĩnh đã được hủy kích hoạt!", true), "flash_success");
			$this->redirect(array(
				'action'	=>	'index'
			));
		} else {
			$this->Session->setFlash(__("Bạn vui lòng chọn các trang tĩnh cần hủy kích hoạt", true), "flash_error");
			$this->redirect(array(
				'action'	=>	'index'
			));
		}
	}
}
?>